The World Wide Web is a popular application of the client/server computing model. FIG. 1 is a simplified block diagram of the relationship between elements used in a web system. One or more Web Clients 110, each of which is a computer running a software process such as a Web Browser Program 115, are connected to Web Server 120 over a local or wide area network within a region, for example Region 150. The Web Server 120 may be communicatively coupled with a Caching Proxy Server 130 which is located near the Web Server 120 and accessible, for example, over a local area network or local interconnect. The Caching Proxy Server 130 may access Content Servers 142, 144, and 146 located locally or over a global information network such as the Internet. Users typically use a Web Browser Program 115, such Mozilla Firefox, Microsoft Explorer, etc., on a Web Client 110 to display web pages and to perform transactions with various content servers for accessing desired information. Browsers are computer programs that are designed to request data content and user interface items from the network, and to decode and display the requested items when they are provided to clients 110.
A Web Server 120 contains multimedia information resources, such as documents and images, to be provided to clients upon demand. The Web Server 120 may additionally or alternatively contain software for dynamically generating such resources in response to requests. A Web Browser Program 115 and Web Server 120 communicate using one or more agreed-upon protocols that specify the format of the information that is communicated. The Web Browser Program 115 establishes a connection to the Web Server 120 using a communication protocol called the Hypertext Transfer Protocol (HTTP). A Uniform Resource Locator (URL) uniquely identifies each information object stored on, dynamically generated, or retrieved by the Web Server 120. A URL is a form of network address that identifies the location of information stored in a network.
Some desired content may be available locally within the same region as the web server, such as Content Server 142. An example of locally provided services may be a weather or news service that supplies information about the local region. However, often the requested URL references content supplied by a content provider that is not related to or even co-resident with the web server. For example, an installation of web servers in India may receive a request to access Facebook, and the Facebook servers are not located in India. With regard to FIG. 1, Region 150 may be in India, and Region 160 may be in the United States with Region 160 hosting Facebook as an example Content Server 144.
A key factor that impacts the time that a web server process is tied up waiting to satisfy a request for a URL may be the speed with which a separate Content Server 142, 144, or 146 can supply the requested information. Content server response time may be limited by the speed, reliability, and congestion level of the network route through the network, by geographical distance delays, and by server load level. Accordingly, web server process times can be reduced by storing replicas of popular content objects in repositories geographically located close to the web server. Each local repository for object replicas is generally referred to as a cache. A web server may be able to access replicas from a topologically proximate cache faster than possible from the original content server, while at the same time reducing Internet server traffic.
In one arrangement, as shown in FIG. 1, the Proxy Cache 135 is located in a Caching Proxy Server 130 that is logically interposed between the Web Server 120 and the Content Servers 142, 144, and 146. The Caching Proxy Server 130, also called a proxy server, provides a “middleman” gateway service, acting as a content server to the Web Server 120, and a client to the Content Servers 142, 144, and 146. A proxy server equipped with a cache is called a caching proxy server, a caching server, or a “proxy cache”.
The proxy server 130 intercepts requests for resources that are directed from the Web Server 120 to one of the Content Servers 142, 144, or 146. When the Proxy Cache 135 has a replica of the requested resource that meets certain freshness constraints, the proxy responds to the web server and serves the resource directly. In this arrangement, the number and volume of long distance data transfers over the network are greatly reduced. As a result, network resources or objects are provided more rapidly to the web server, thus freeing up processes faster. Freeing up web server processes enables new requests to be serviced.